package srv;

import beans.DireccionBean;
import beans.ProveedorBean;
import dao.HibernateProveedorBeanDAO;
import entities.DireccionEntity;
import entities.ProveedorEntity;

public class ProveedorSRV 
{
	private static HibernateProveedorBeanDAO dao;
	private static ProveedorSRV instancia;
	
	static {
			dao = HibernateProveedorBeanDAO.getInstancia();
			}
	
	public static ProveedorSRV getInstancia()
	{
		if (instancia == null)
		{
			instancia = new ProveedorSRV();
		}
		return instancia;
	}
	
	public ProveedorEntity pasadoDesdeBean( ProveedorBean proveedorBean )
	{
		ProveedorEntity proveedor = new ProveedorEntity();
		proveedor.setCondicionDeCompra( proveedorBean.getCondicionDeCompra());
		proveedor.setCUIT( proveedorBean.getCUIT() );
		proveedor.setDescuentos( proveedorBean.tieneDescuentos() );
		
		DireccionEntity direccion = DireccionSRV.getInstancia().pasadoDesdeBean( proveedorBean.getDireccion());
		proveedor.setDireccion(direccion);
		
		proveedor.setEstado( proveedorBean.isEstado());
		proveedor.setId( proveedorBean.getId() );
		proveedor.setRazonSocial( proveedorBean.getRazonSocial());
		
		return proveedor;
	}
	
	public ProveedorBean pasadoDesdeEntity( ProveedorEntity proveedorEntity )
	{
		ProveedorBean proveedor = new ProveedorBean();
		proveedor.setCondicionDeCompra( proveedorEntity.getCondicionDeCompra());
		proveedor.setCUIT( proveedorEntity.getCUIT() );
		proveedor.setDescuentos( proveedorEntity.tieneDescuentos() );
		
		DireccionBean direccion = DireccionSRV.getInstancia().pasadoDesdeEntity( proveedorEntity.getDireccion());
		proveedor.setDireccion(direccion);
		
		proveedor.setEstado( proveedorEntity.isEstado());
		proveedor.setId( proveedorEntity.getId() );
		proveedor.setRazonSocial( proveedorEntity.getRazonSocial());
		
		return proveedor;
	}
	
	public void grabarProveedor( ProveedorBean nuevoProveedor )
	{
		ProveedorEntity prov = this.pasadoDesdeBean( nuevoProveedor );
		dao.grabarProveedor( prov );
	}

	public void eliminarProveedor( ProveedorBean proveedor)
	{
		ProveedorEntity prov = this.pasadoDesdeBean( proveedor );
		dao.eliminarProveedor( prov );
	}
	
	public void modificarProveedor( ProveedorBean proveedor )
	{
		ProveedorEntity prov = this.pasadoDesdeBean( proveedor );
		dao.modificarProveedor( prov );
	}
	
	public ProveedorBean obtenerProveedorPorCUIT( String CUIT )
	{
		ProveedorEntity prov = dao.obtenerProveedorPorCUIT(CUIT);
		ProveedorBean proveedor = this.pasadoDesdeEntity( prov );
		return proveedor;
	}
}
